package com.zfh.iterator;

/**
 * <h1>书架
 * <li> 实现集合接口，从接口方法直接获取适用于本集合的迭代器
 * @author fhzheng
 *
 */
public class BookShelf implements Aggregate {
	
	private Book[] books;
	private int last = 0;
	
	/**
	 * <li> 初始化书架
	 * @param maxsize
	 */
	public BookShelf(int maxsize) {
		this.books = new Book[maxsize];
	}
	
	/**
	 * <li>获取索引位置的书
	 * @param index
	 * @return
	 */
	public Book getBookAt(int index) {
		return books[index];
	}
	
	/**
	 * <li>从最后添加书
	 * @param book
	 */
	public void appendBook(Book book) {
		this.books[last] = book;
		last++;
	}
	
	/**
	 * <li>获取书架上的书本数
	 * @return
	 */
	public int getLength() {
		return last;
	}

	/**
	 * <li> 获取具体针对本书架的迭代器实现类对象，可以直接使用的迭代器
	 */
	@Override
	public Iterator iterator() {
		return new BookShelfIterator(this);
	}

}
